package com.haitonghop.utils;

import java.util.Random;

import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.Application;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.facebook.FacebookRequestError;
import com.facebook.HttpMethod;
import com.facebook.Request;
import com.facebook.Request.Callback;
import com.facebook.RequestAsyncTask;
import com.facebook.Response;
import com.facebook.android.Utility;
import com.haitonghop.R;
import com.haitonghop.controls.onUserCreateTopic;
import com.haitonghop.data.HaiBLMetalData;
import com.haitonghop.main.DisplayUtils;
import com.haitonghop.modules.local.MoreActivity;

public class FaceBookUtils {

	@SuppressWarnings("deprecation")
	public static void makeFriend(final HaiBLMetalData blMetalData, final Activity context) {
		// final Bundle params = new Bundle();
		// params.putString("message",
		// "Ứng dụng Hài Bựa! này hay nè - Hãy tải v�? ngay nhé ");
		//
		// if (context != null && !context.isFinishing()) {
		// context.runOnUiThread(new Runnable() {
		//
		// public void run() {
		//
		// Utility.mFacebook.dialog(context, "apprequests", params, new
		// BaseDialogListener() {
		//
		// public void onComplete(final Bundle values) {
		//
		// }
		// });
		// }
		// });
		// }

	}

	public static void doViewComment(final Activity activity, final Application application, final Class<?> cls, final String urlCommentDetail) {
		if (Utility.isGoodToUseFacebook() || AppSettingParams.isDontAskIfNotLoginFB) {
			if (activity != null && application != null && cls != null) {
				Intent intent = new Intent(application, cls);
				if (urlCommentDetail != null) {
					intent.putExtra("IMAGE_ID", urlCommentDetail);
				}
				activity.startActivity(intent);
			}
		} else {
			DisplayUtils.openDialogConfirmFacebook(null, activity, new OnClickListener() {

				@Override
				public void onClick(DialogInterface dialog, int which) {
					if (activity != null && application != null && cls != null) {
						Intent intent = new Intent(application, cls);
						if (urlCommentDetail != null) {
							intent.putExtra("IMAGE_ID", urlCommentDetail);
						}
						activity.startActivity(intent);
					}
				}
			});
		}
	}

	@SuppressWarnings("deprecation")
	public static void doShareApplication(final Activity context) {
		if (Utility.isGoodToUseFacebook() && context != null) {

			context.runOnUiThread(new Runnable() {

				@Override
				public void run() {
					Toast.makeText(context.getApplicationContext(), "Đang đăng lời giới thiệu lên tường nhà bạn...", Toast.LENGTH_LONG).show();
				}
			});
			String message = "Link: https://play.google.com/store/apps/details?id=com.haitonghop \n" +
					"\n-Ứng dụng Hài Tổng Hợp đã được tích hợp Kho Truyện Tranh :D nha tay update nào mọi người :D" +
					"\n-Ứng dụng dành cho tất cả dòng máy smarthphone chạy hệ điều hành Android ( phiên bản 2.1 trở lên), smarthphone" +
					" Android của Samsung, Sony, LG, Asus, Motorola, Google Nexus." +
					"\n-Hỗ trợ các dòng máy tính bảng(tablet) Android của Samsung, LG, " +
					"Asus...7 inch,10 inch." + "\nChạy được trên PC (yêu cầu cài đặt ứng dụng BlueStack)";
			final Bundle params = new Bundle();
			params.putString("caption", context.getResources().getString(R.string.desc_app_name));
			params.putString("description", "Truyện hài tổng hợp, truyện tranh, ảnh girl xinh " );
			params.putString("message", message );
			params.putString("picture", "http://haibl.net/site/banner.png");
			params.putString("link", "http://haibl.net/public/download?url=android");
			params.putString("name", "Tải về máy " + context.getResources().getString(R.string.app_name) + " ngay.");
			if (context != null && !context.isFinishing()) {

				Request request = new Request(Utility.mFacebook.getSession(), "me/feed", params, HttpMethod.POST, new Callback() {

					@Override
					public void onCompleted(final Response response) {

						context.runOnUiThread(new Runnable() {
							//
							@Override
							public void run() {
								try {
									Toast.makeText(context.getApplicationContext(), "Đăng lời giới thiệu lên tường nhà bạn thành công!", Toast.LENGTH_LONG).show();
									JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();
									String postId = null;
									try {
										postId = graphResponse.getString("id");
									} catch (JSONException e) {
										Log.i("FACEUTILS", "JSON error " + e.getMessage());
									}
									FacebookRequestError error = response.getError();
									if (error != null) {
										Toast.makeText(context.getApplicationContext(), error.getErrorMessage(), Toast.LENGTH_SHORT).show();
									} else {
										Toast.makeText(context.getApplicationContext(), "Đăng lời giới thiệu lên nhà thành công!", Toast.LENGTH_LONG).show();
									}
								} catch (Exception e) {

								}

							}
						});
					}
				});

				RequestAsyncTask task = new RequestAsyncTask(request);
				task.execute();
			}
		} else {
			DisplayUtils.openConfirmDialog("Lỗi", "Bạn chưa đăng nhập Facebook, bạn có muốn đăng nhập ngay không?", context, new DialogInterface.OnClickListener() {

				@Override
				public void onClick(DialogInterface dialog, int which) {
					Intent intent = new Intent(context, MoreActivity.class);
					context.startActivity(intent);
				}

			}, null);
		}
	}

	static String[] randomShareFeedFaceBook = new String[] { " vừa xem ảnh này trên ứng dụng Hài Bựa!(Android) và cảm thấy rất thú vị. Bạn hãy click vào link bên dưới và dùng thử nhé!", " xem ảnh này và cảm thấy rất vui, muốn chia sẻ với các bạn.", " dùng ứng dụng Hài Bựa!(Android) để xem ảnh và video clip hài dưới đây, còn bạn có muốn thử không?", " đã sử dụng ứng dụng Hài Bựa!(Android) và cảm thấy đang cảm thấy rất vui vẻ, bạn tải về dùng luôn nhé?", };

	@SuppressWarnings("deprecation")
	public static void doShareFaceBookComic(final HaiBLMetalData blMetalData, final Activity context) {
		if (blMetalData != null) {
			if (Utility.isGoodToUseFacebook()) {
				if (context != null && !context.isFinishing()) {

//					String message = AppSettingParams.userDisplayName + " đang đọc truyên tranh online với tập hợp hơn 3000 cuốn truyện tranh "
//					+ ", hỗ trợ bookmark để xem lại, nếu bạn là người iu thích truyện tranh thì hãy cùng "
//							+ AppSettingParams.userDisplayName + " " + "sử dụng ứng dụng xem truyện tranh online này nhé!";
					String message = "Link: https://play.google.com/store/apps/details?id=com.haitonghop \n" +
					"\n-Ứng dụng Hài Tổng Hợp đã được tích hợp Kho Truyện Tranh :D nha tay update nào mọi người :D" +
					"\n-Ứng dụng dành cho tất cả dòng máy smarthphone chạy hệ điều hành Android ( phiên bản 2.1 trở lên), smarthphone" +
					" Android của Samsung, Sony, LG, Asus, Motorola, Google Nexus." +
					"\n-Hỗ trợ các dòng máy tính bảng(tablet) Android của Samsung, LG, " +
					"Asus...7 inch,10 inch." + "\nChạy được trên PC (yêu cầu cài đặt ứng dụng BlueStack)";
					final String finalMessage = message;
					context.runOnUiThread(new Runnable() {

						@Override
						public void run() {
							Toast.makeText(context.getApplicationContext(), "Đang đăng truyện lên tường nhà bạn...", Toast.LENGTH_LONG).show();

							Bundle params = new Bundle();
							params.putString("caption", context.getResources().getString(R.string.desc_app_name));
							params.putString("description", blMetalData.getTitleDescription());
							params.putString("picture", blMetalData.getImageUrl());
							params.putString("message", finalMessage);
							params.putString("link", "http://haibl.net/public/download?url=" + blMetalData.getImageUrl());
							params.putString("name", "Click vào xem ảnh và Tải về máy " + context.getResources().getString(R.string.app_name) + " ngay.");



							Callback callback = new Callback() {

								@Override
								public void onCompleted(final Response response) {
									Toast.makeText(context.getApplicationContext(), "Đăng truyện lên tường nhà bạn thành công!", Toast.LENGTH_LONG).show();
									context.runOnUiThread(new Runnable() {
										@Override
										public void run() {
											try {
												JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();
												String postId = null;
												try {
													postId = graphResponse.getString("id");
												} catch (JSONException e) {
													Log.i("FACEUTILS", "JSON error " + e.getMessage());
												}
												FacebookRequestError error = response.getError();
												if (error != null) {
													Toast.makeText(context.getApplicationContext(), error.getErrorMessage(), Toast.LENGTH_SHORT).show();
												} else {
													Toast.makeText(context.getApplicationContext(), "Đăng truyện lên tường nhà bạn thành công!", Toast.LENGTH_LONG).show();
												}
											} catch (Exception e) {
												Log.i("RequestFB", "" + e.getMessage());
												e.printStackTrace();
											}

										}
									});
								}
							};

							Request request = new Request(Utility.mFacebook.getSession(), "me/feed", params, HttpMethod.POST, callback);
							RequestAsyncTask task = new RequestAsyncTask(request);
							task.execute();

						}

					});
				}
			} else {
				DisplayUtils.openConfirmDialog("Lỗi", "Bạn chưa đăng nhập Facebook, bạn có muốn đăng nhập ngay không?", context, new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						Intent intent = new Intent(context, MoreActivity.class);
						context.startActivity(intent);
					}

				}, null);
			}
		} else {
			Toast.makeText(context, "Không có truyện hiển thị.", 1000).show();
		}
	}

	@SuppressWarnings("deprecation")
	public static void doShareFaceBook(final HaiBLMetalData blMetalData, final Activity context) {
		if (blMetalData != null) {
			if (Utility.isGoodToUseFacebook()) {
				if (context != null && !context.isFinishing()) {

					DisplayUtils.openDialogCommentShareFacebook(context, new onUserCreateTopic() {

						@Override
						public void onCreate(String name) {
							String message = "";
							if ("$RANDOM$".equals(name)) {
								Random random = new Random(System.currentTimeMillis());
								int rd = Math.abs(random.nextInt()) % randomShareFeedFaceBook.length;
								if (rd > -1 && rd < randomShareFeedFaceBook.length) {
									message = AppSettingParams.userDisplayName + randomShareFeedFaceBook[rd];
								} else {
									message = AppSettingParams.userDisplayName + randomShareFeedFaceBook[0];
								}
							} else {
								message = name;
							}
							message = "Link: https://play.google.com/store/apps/details?id=com.haitonghop \n" +
									"\nỨng dụng Hài Tổng Hợp đã được tích hợp Kho Truyện Tranh :D nha tay update nào mọi người :D" +
									"\nỨng dụng dành cho tất cả dòng máy smarthphone chạy hệ điều hành Android ( phiên bản 2.1 trở lên), smarthphone" +
									" Android của Samsung, Sony, LG, Asus, Motorola, Google Nexus." +
									"\nHỗ trợ các dòng máy tính bảng(tablet) Android của Samsung, LG, " +
									"Asus...7 inch,10 inch." + "\nChạy được trên PC (yêu cầu cài đặt ứng dụng BlueStack)";
							final String finalMessage = message;
							context.runOnUiThread(new Runnable() {

								@Override
								public void run() {
									Toast.makeText(context.getApplicationContext(), "Đang đăng ảnh lên tường nhà bạn...", Toast.LENGTH_LONG).show();

									Bundle params = new Bundle();
									params.putString("caption", context.getResources().getString(R.string.desc_app_name));
									params.putString("description", blMetalData.getTitleDescription());
									params.putString("picture", blMetalData.getImageUrl());
									params.putString("message", finalMessage);
									params.putString("link", "http://haibl.net/public/download?url=" + blMetalData.getImageUrl());
									params.putString("name", "Click vào xem ảnh và Tải về máy " + context.getResources().getString(R.string.app_name) + " ngay.");

									Request request = new Request(Utility.mFacebook.getSession(), "me/feed", params, HttpMethod.POST, null);

									Callback callback = new Callback() {

										@Override
										public void onCompleted(final Response response) {
											Toast.makeText(context.getApplicationContext(), "Đăng ảnh lên tường nhà bạn thành công!", Toast.LENGTH_LONG).show();
											context.runOnUiThread(new Runnable() {
												@Override
												public void run() {

													try {
														JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();
														String postId = null;
														try {
															postId = graphResponse.getString("id");
														} catch (JSONException e) {
															Log.i("FACEUTILS", "JSON error " + e.getMessage());
														}
														FacebookRequestError error = response.getError();
														if (error != null) {
															Toast.makeText(context.getApplicationContext(), error.getErrorMessage(), Toast.LENGTH_SHORT).show();
														} else {
															Toast.makeText(context.getApplicationContext(), "Đăng ảnh lên tường nhà bạn thành công!", Toast.LENGTH_LONG).show();
														}
													} catch (Exception e) {
														Log.i("RequestFB", "" + e.getMessage());
														e.printStackTrace();
													}

												}
											});
										}
									};

									request.setCallback(callback);
									RequestAsyncTask task = new RequestAsyncTask(request);
									task.execute();

								}
							});
						}

						@Override
						public void onCancel() {

						}
					});
				}
			} else {
				DisplayUtils.openConfirmDialog("Lỗi", "Bạn chưa đăng nhập Facebook, bạn có muốn đăng nhập ngay không?", context, new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						Intent intent = new Intent(context, MoreActivity.class);
						context.startActivity(intent);
					}

				}, null);
			}
		} else {
			Toast.makeText(context, "Không có truyện hiển thị.", 1000).show();
		}
	}
}

// Utility.mAsyncRunner.request("me/feed", params,
// new RequestListener() {
//
// public void
// onMalformedURLException(MalformedURLException e,
// Object state) {
// // TODO Auto-generated method stub
//
// }
//
// public void onIOException(IOException e, Object
// state) {
// // TODO Auto-generated method stub
//
// }
//
// public void
// onFileNotFoundException(FileNotFoundException e,
// Object state) {
// // TODO Auto-generated method stub
//
// }
//
// public void onFacebookError(final FacebookError
// e, Object state) {
// context.runOnUiThread(new Runnable() {
//
// public void run() {
// // TODO Auto-generated method stub
// Toast.makeText(context, "Lỗi Facebook: " +
// e.getMessage(), Toast.LENGTH_SHORT).show();
// }
// });
// }
//
// public void onComplete(final String response,
// Object state) {
//
// }
// });

// Utility.mFacebook.dialog(context, "feed", params,
// new DialogListener() {
//
// public void onFacebookError(FacebookError e) {
// Toast.makeText(context, "Lỗi Facebook: " +
// e.getMessage(), Toast.LENGTH_SHORT).show();
//
// }
//
// public void onError(DialogError e) {
// Toast.makeText(context, "Lỗi Facebook: " +
// e.getMessage(), Toast.LENGTH_SHORT).show();
//
// }
//
// public void onComplete(Bundle values) {
// final String postId =
// values.getString("post_id");
// if (postId != null) {
// Toast toast = Toast.makeText(context,
// "�?ã đăng status thành công", Toast.LENGTH_SHORT);
// toast.show();
// } else {
// Toast toast = Toast.makeText(context,
// "Không post được status lên tư�?ng.",
// Toast.LENGTH_SHORT);
// toast.show();
// }
//
// }
//
// public void onCancel() {
// Toast.makeText(context, "Bạn đã hủy b�?.",
// Toast.LENGTH_SHORT).show();
//
// }
// });
// String access_token =
// Utility.mFacebook.getAccessToken();
// System.out.println(access_token);
